GdkWindow: Try to use a Core 3.2 GL profile for the paint context
authorAlexander Larsson <alexl@redhat.com>
Thu, 6 Nov 2014 08:15:03 +0000 (09:15 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 6 Nov 2014 11:24:43 +0000 (12:24 +0100)
If this is supported we avoid a lot of legacy baggage which we don't
need.

gdk/gdkwindow.c

index b43d5d9e06258a6495d1adab2c397664a1f4c65d..c74ca4e2bdf2b5318d34b3a21e81915512cd5c7f 100644 (file)
@@ -2739,12 +2739,26 @@ gdk_window_get_paint_gl_context (GdkWindow *window, GError **error)
     }
 
   if (window->impl_window->gl_paint_context == NULL)
-    window->impl_window->gl_paint_context =
-      GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
-                                                                  TRUE,
-                                                                   GDK_GL_PROFILE_DEFAULT,
-                                                                   NULL,
-                                                                   error);
+    {
+      window->impl_window->gl_paint_context =
+        GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
+                                                                     TRUE,
+                                                                     GDK_GL_PROFILE_3_2_CORE,
+                                                                     NULL,
+                                                                     error);
+      if (window->impl_window->gl_paint_context == NULL &&
+          g_error_matches (*error, GDK_GL_ERROR,
+                           GDK_GL_ERROR_UNSUPPORTED_PROFILE))
+        {
+          g_clear_error (error);
+          window->impl_window->gl_paint_context =
+            GDK_WINDOW_IMPL_GET_CLASS (window->impl)->create_gl_context (window,
+                                                                         TRUE,
+                                                                         GDK_GL_PROFILE_DEFAULT,
+                                                                         NULL,
+                                                                         error);
+        }
+    }
 
   return window->impl_window->gl_paint_context;
 }